﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using OpenTK.Graphics.OpenGL;
public unsafe class Capa
{
    public IEntidad[] objEntidades;

    public Capa(TIPO_ENTIDAD enmTipoEntidad, int intTamano)
    {
        switch (enmTipoEntidad)
        {
            case TIPO_ENTIDAD.Linea :
            {
                objEntidades = new Linea[intTamano];
                break;
            }
            case TIPO_ENTIDAD.Rectangulo:
            {
                objEntidades = new Rectangulo[intTamano];
                break;
            }
            case TIPO_ENTIDAD.Triangulo:
            {
                objEntidades = new Triangulo[intTamano];
                break;
            }
        }
        this._objEntidad = enmTipoEntidad;
        this.IndiceActual = -1;
        this.Visible = true;
    }

    private int _IndiceActual;
    public int IndiceActual
    {
        get { return _IndiceActual; }
        set { _IndiceActual = value; }
    }

    private bool _negrita;
    public bool Negrita
    {
        get { return _negrita; }
        set { _negrita = false; }
    }

    private bool _cursiva;
    public bool Cursiva
    {
        get { return _cursiva; }
        set { _cursiva = false; }
    }

    private int _baseFuente = -1;
    public int BaseFuente
    {
        get { return _baseFuente; }
        set { _baseFuente = value; }
    }

    public void adicionar(IEntidad objGeometria)
    {
        IndiceActual++;
        objEntidades[IndiceActual] =  objGeometria;
        objEntidades[IndiceActual].CapaCanvas = this;
    }

    public void eliminar(IEntidad objGeometria)
    {
        //objEntidades.Remove(objGeometria.ID);
       // objEntidadesRuntime.Remove(objGeometria.ID);
    }

    public void eliminar(int intEntidad)
    {
        //objEntidades.Remove(intEntidad);
    }

    private string _id;
    public string ID
    {
        get { return _id; }
        set { _id = value; }
    }

    private int _altura = 0;
    public int Altura
    {
        get { return _altura; }
        set { _altura = value; }
    }

    private short _largo = 0;
    public short Largo
    {
        get { return _largo; }
        set { _largo = value; }
    }

    private short _alto = 0;
    public short Alto
    {
        get { return _alto; }
        set { _alto = value; }
    }

    /*private int _indice = -2;
    public int indice
    {
        get { return _indice; }
        set { _indice = value; }
    }*/

    private Colores _coloreado;
    public Colores Coloreado
    {
        get { return _coloreado; }
        set { _coloreado = value; }
    }

    private float _grosor;
    public float Grosor
    {
        get { return _grosor; }
        set { _grosor = value; }
    }

    private float _radio;
    public float Radio
    {
        get { return _radio; }
        set { _radio = value; }
    }

    private bool _visible;
    public bool Visible
    {
        get { return this._visible; }
        set { this._visible = value; }
    }

    private Estilo.Forma _tipoForma;
    public Estilo.Forma TipoForma
    {
        get { return this._tipoForma; }
        set { this._tipoForma = value; }
    }

    private TIPO_ENTIDAD _objEntidad;
    public TIPO_ENTIDAD TipoEntidad
    {
        get { return this._objEntidad; }
    }

    public unsafe void _pintar()
    {
        GL.Color4(this.Coloreado.Rojo, this.Coloreado.Verde, this.Coloreado.Azul, this.Coloreado.Alfa);
        for (int i = 0; i <= IndiceActual; i++)
        {
            objEntidades[i]._pintar();
        }
    }
}

